Fine-tuning logging
LLama2 เริ่มบันทึก 20240204T002100+07:00
Log ใน Wandb.ai
- #Note 1: Exploring Way on Fine-Tunning LLama 2 on a Custom Data 2024-02-04
Datasets
Request a query เพื่อขอเอา desc บนวิกิสนเทศมาทำ Dataset
- ขอไว้ที่ https://w.wiki/94L2 เค้าให้ https://qlever.cs.uni-freiburg.de/wikidata/BzKiSG มา แต่เหมือนจะขาด Shortdesc ไป (โหลดแล้วเก็บไว้ใน gs://ptsgrn-data/datasets/general/wikidata-wikipedia-short-desc.csv
)
- แต่ไม่เป็นไร เอามาโมแก้ไขนิดหน่อย จะได้เป็น https://w.wiki/94L4 แต่ Wikidata ดึงข้อมูลเยอะขนาดนั้นไม่ได้ ต้องเอาข้อมูลจาก https://qlever.cs.uni-freiburg.de/wikidata/y6zhUD แทน
- ผลลัพท์ที่ได้มีประมาณ 190k+ ต้องเอามาทำความสะอาดอีกเยอะ
ใช้ Wikipedia REST Endpoint เพื่อดึง leading paragraph จากเนื้อหา
- จาก https://w.wiki/94L2 โหลด CSV มา แล้วจึง dropna()
- ลบแถวที่ซ้ำ Q-id ทั้งหมด ให้เหลือ entry ละ 1 row
- เหลือข้อมูล 20k เรียกใช้ API วิกิพีเดีย เพื่อดึง first paragraph ออกมา
- ขั้นตอนต่อไปเป็นการบรรยายโค้ดจาก https://colab.research.google.com/drive/1vtNUxKt6X2IJiA6TNZkwBxcRI237okHW#scrollTo=II-ygTWyai_N
- เรียกใช้ Wikipedia REST API: Page summary ซึ่งจะมีทั้ง short description และ first paragraph ของหน้า
- บันทึกค่าใน dataframe
- ได้ไฟล์ Wikipedia-wikidata-content-20240206.csv สามารถเข้าถึง/ดาวน์โหลดได้จาก https://storage.googleapis.com/ptsgrn-data/datasets/general/Wikipedia-wikidata-content-20240206.csv (PUBLIC)
Fine tunning
มีความพยายามในการ Fine tunning จำนวนมาก ได้แก่
Lab04
https://colab.research.google.com/drive/1K0rNBNEH-UcViAO-isUIpBVLUtKY7alZ
- ใช้โค้ดจากที่มีผู้แจกไว้บน Google Colab
- ใช้ Datasets จาก Wikipedia ที่เก็บเอง (ก่อนต้วเก็บจาก REST Endpoint ด้านบน) มีแต่ข้อมูลเกี่ยวกับวัดเท่านั้น
- ใช้การเขียน instruction แบบ llama chat
Base model: NousResearch/Llama-2-7b-chat-hfm, Train on Google Colab Pro
<s>[INST] <<SYS>>
You are an helpeful assistant.
<</SYS>> Summarize into Thai short description from this content: วัดสุวรรณดารารามราชวรวิหาร ตั้งอยู่ริมป้อมเพชร อำเภอพระนครศรีอยุธยา จังหวัดพระนครศรีอยุธยา พระอัยกาในพระบาทสมเด็จพระพุทธยอดฟ้าจุฬาโลกมหาราช โปรดให้สร้างวัดนี้ขึ้นตั้งแต่สมัยกรุงศรีอยุธยา ให้ชื่อว่าวัดทอง เป็นวัดของฝ่ายวังหน้า ต่อมาเมื่อพระบาทสมเด็จพระพุทธยอดฟ้าจุฬาโลกมหาราช ทรงขึ้นครองราชย์เป็นกษัตริย์แห่งกรุงรัตนโกสินทร์ ก็โปรดเกล้าให้บูรณะวัดนี้ทั้งหมด เป็นวัดของสมเด็จพระปฐมบรมมหาชนกต้นพระบรมราชวงศ์จักรี [/INST] Short description of this content is: วัดในจังหวัดพระนครศรีอยุธยา </s>
- ผลที่ได้: CUDAOutOfMemory
Lab05
https://colab.research.google.com/drive/1CWgeDULoTJRCvUc-1-rY3rVG6IpgGYX2#scrollTo=-fLDt9Garzfo
ใช้ OpenThaiGPT เพื่อลองทำงานของเราดู
- Base model: openthaigpt/openthaigpt-1.0.0-beta-13b-chat-gguf
- Colab Source: Official
- Zero shot
response = llm.complete("""สร้าง Short description ของข้อความต่อไปนี้: วัดพระเหลาเทพนิมิต เป็นวัดราษฎร์สังกัดคณะสงฆ์ฝ่ายมหานิกาย ตั้งอยู่ในตำบลพนา อำเภอพนา จังหวัดอำนาจเจริญ ตั้งอยู่บนเนื้อที่ 7 ไร่เศษ""")
print(response.text)
#>> วัดพระเหลาเทพนิมิตเป็นวัดราษฎร์ที่ตั้งอยู่ในอำเภอพนา จังหวัดอำนาจเจริญ มีพื้นที่ 7 ไร่ และตั้งอยู่ในตำบลพนา
- Few-shot
#@title ## Few-shot OpenThaiGPT
response = llm.complete("สร้าง Short description ของข้อความต่อไปนี้: \
วัดสุวรรณดารารามราชวรวิหาร ตั้งอยู่ริมป้อมเพชร อำเภอพระนครศรีอยุธยา จังหวัดพระนครศรีอยุธยา พระอัยกาในพระบาทสมเด็จพระพุทธยอดฟ้าจุฬาโลกมหาราช โปรดให้สร้างวัดนี้ขึ้นตั้งแต่สมัยกรุงศรีอยุธยา ให้ชื่อว่าวัดทอง เป็นวัดของฝ่ายวังหน้า ต่อมาเมื่อพระบาทสมเด็จพระพุทธยอดฟ้าจุฬาโลกมหาราช ทรงขึ้นครองราชย์เป็นกษัตริย์แห่งกรุงรัตนโกสินทร์ ก็โปรดเกล้าให้บูรณะวัดนี้ทั้งหมด เป็นวัดของสมเด็จพระปฐมบรมมหาชนกต้นพระบรมราชวงศ์จักรี \n\
บอตตอบ: วัดในอำเภอพระนครศรีอยุธยา จังหวัดพระนครศรีอยุธยา\n\
สร้าง Short description ของข้อความต่อไปนี้: วัดพระธาตุหริภุญชัย ในอดีตนิยมเรียก วัดเจดีย์หลวง เป็นพระอารามหลวงชั้นเอก ชนิดวรมหาวิหาร ตั้งอยู่ใจกลางเมืองลำพูน มีเนื้อที่ทั้งหมดประมาณ 28 ไร่ 3 งาน 26 ตารางวา\
บอตตอบ: ")
print(response.text)
#>> วัดในจังหวัดลำพูน
- ผลที่ได้ออกมาดูดีมาก แต่ยังไม่ลองกับข้อมูลจริงเต็ม ๆ อย่างลองทำ ROUGH Evaluation หรือเช็คกับข้อความอื่นนอกจากที่เอามาเป็นตัวอย่าง
Lab07
https://colab.research.google.com/drive/1vtNUxKt6X2IJiA6TNZkwBxcRI237okHW#scrollTo=eh9Qp0VJZ5sU
- คล้ายกับ (Lab04)[#lab04]
- ทำลองโดยนำโค้ดมาจากอีกที่ เริ่มสร้าง Datasets จากที่นี่
- เริ่มใช้ Wandb.ai เป็นครั้งแรกเพื่อบันทึกข้อมูลการ Train
- ใช้
SFTTrain
โดยตรง ร่วมกับ base model: TinyPixel/Llama-2-7B-bf16-sharded - Base model คือ TinyPixel/Llama-2-7B-bf16-sharded
- CudaOutOfMemory เหมือนเดิม
Lab09
https://colab.research.google.com/drive/1CsYkpvRouxISL6XSfxVyEVG1JaZD9bo5#scrollTo=5zfYb25tfFp0
- SFT โดยใช้ AutoTrain จากคลิป LLAMA-2 🦙: EASIET WAY To FINE-TUNE ON YOUR DATA on YouTube (30 July 2023)
- คัดลอกโค้ดจาก description ของวีดีโอ
- ใช้ autotrain ผ่าน CLI จึงใช้งานง่ายขึ้นเยอะ
- ยังไม่เคย run
Lab10
https://colab.research.google.com/drive/19BSwDr3VsL9MAEwiLF9uvKwNu7W40Awc
- Evaluation โดยใช้ ROUGH ได้ผลลัพธ์
{'rouge1': 0.4916729036208105, 'rouge2': 0.40793744164332396, 'rougeL': 0.4869692901062532, 'rougeLsum': 0.4882623240118191}
- ใช้ Short description จริงที่ยังมีอยู่ในวิกิพีเดีย
- ใช้ Datasets ที่เตรียมด้านบน alter df เพื่อเพิ่ม col "text" สำหรับ fine tune